fill() is not atomic
When fill fails, because max_sites is reached or because the shape function raises an exception (this happens in attach_lead() when the scattering region does not interrupt the central builder), the graph of the target builder is in an inconsistent state and is currently erased.
fill should be atomic: either it suceeds, or it leaves self untouched.