internal void MoveTo(NodeSlot newSlot) { try { BPlusTree <TKey, TValue> .LogInfo("Begin moving node from " + this.Location + " to " + newSlot.Location); Tree.Lock(delegate() { // notify parent, if any, that we're moving if (Parent != null) { Parent.ChildIsMoving(this, newSlot.Location); } // let specific instance of this node know it should do its moving code movingTo(newSlot.Location); // finally move it this.Location = newSlot.Location; }); } finally { BPlusTree <TKey, TValue> .LogInfo("End moving node"); } }