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:   HashTrieNode : PHashTrieNode;
    TreeHash : THashRecord;
    Hash : Word;
    procedure FindSmallestNode;
    var
      ANode : PKeyValuePairNode;
    begin
  
negative.code:           end
            else
            begin
              // When the smallest node is the one on the immediate right, we will
              // connect the parent of the node being removed to the one on the immediate
              // right, connect this one to the whole left branch of the one being removed
              // and then dealloc the node being removed.
              // We can do this connection to the left pointer of the node to the right
              // because we know this node doesn't have any tree on its left by definition
              ParentNodePtr^ := Node^.Right;
              Assert(Node^.Right^.Left = nil, 'Node^.Right^.Left must be nil');
              Node^.Right^.Left := Node^.Left;
              trieAllocators.DeAlloc(Node);
            end;
  