anchor.diff:          begin
             if SmallestNode <> Node^.Right then
             begin
  +            // When the smallest node is any other node than the one on the immediate
  +            // right of the one being removed, we will copy the contents of the smallest
  +            // node to the actual node being "removed", adjust some pointers and really
  +            // remove the smalles node
               SmallestNodeParent^.Left := SmallestNode^.Right;
               Node^.KVP := SmallestNode^.KVP;
               Node^.Next := SmallestNode^.Next;
  
positive.code:         CompareKeys(Node^.KVP.Key, Node^.KVP.KeySize, key, KeySize) then
        begin
          SmallestNode := nil;
          if (Node^.Left <> nil) and (Node^.Right <> nil) and (Node^.Next = nil) then
            FindSmallestNode
          else if (Node^.Left = nil) and (Node^.Next = nil) and (Node^.Right <> nil) then
            ParentNodePtr^ := Node^.Right
          else if (Node^.Left <> nil) and (Node^.Next = nil) and (Node^.Right = nil) then
            ParentNodePtr^ := Node^.Left
          else if (Node^.Left = nil) and (Node^.Next = nil) and (Node^.Right = nil) then
            ParentNodePtr^ := nil
          else if Node^.Next <> nil then
          begin
            ParentNodePtr^ := Node^.Next;
            Node^.Next^.Left := Node^.Left;
            Node^.Next^.Right := Node^.Right;
          end;
          FreeKey(Node^.KVP.Key, Node^.KVP.KeySize);
          if Node^.KVP.Value <> nil then        
            FreeValue(Node^.KVP.Value);
  
negative.code:     begin
        ParentNodePtr := @Node^.Next;
        Node := Node^.Next;
        Assert(Node^.Left = nil, 'Node linked list present. Node^.Left must be nil');
        Assert(Node^.Right = nil, 'Node linked list present. Node^.Right must be nil');
      end;
    end;
  end;
  