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");
            }
        }