public void Merge(ICell source, Model model) { if (source != this) { var c = (ICell <T>)source; var f = _func; _func = c.Function; Parent = c.Parent; c.Function = f; } if (source != this) { source.Dispose(); } // handle update of current while this cell is being constructed if (Parent is Model m) { var cur = m[this.Mnemonic]; if (cur != this && cur.GetType() == this.GetType()) { cur.Merge(this, model); } } }