anchor.diff:      function AddOrReplaceNode(var Root: PKeyValuePairNode; const kvp:
           TKeyValuePair): Boolean;
       procedure NewBacktrackNode(var AIterator: THashTrieIterator; Node:
  -        PKeyValuePairNode; NextMove: TIteratorMovement);
  +        PKeyValuePairNode; NextMove: TIteratorMovement = imLeft);
       function NewKVPNode(const kvp: TKeyValuePair): PKeyValuePairNode;
       procedure NextLeafTreeNode(var AIterator: THashTrieIterator; AFreeNodes:
           Boolean = False);
  +    {$IFDEF DEBUG}
  +    procedure InvalidateKVPNode(ANode : PKeyValuePairNode);
  +    {$ENDIF}
  +    procedure RemoveNode(ParentNodePtr: PPKeyValuePairNode; Node:
  +        PKeyValuePairNode);
     protected
       procedure InitLeaf(var Leaf); {$IFNDEF FPC} inline; {$ENDIF}
       procedure FreeKey({%H-}key: Pointer; {%H-}KeySize: Cardinal); virtual;
  
positive.code:     case FAutoFreeValueMode of
        afmFree             : TObject(value).Free;
        afmFreeMem          : FreeMem(value);
        afmStrDispose       : StrDispose(value);
        afmReleaseInterface : IUnknown(Value)._Release;
      end;
  end;
  
negative.code:       4 : (Hash16_1, Hash16_2, Hash16_3, Hash16_4 : Word);
    end;
  
    TAutoFreeMode = (afmFree, afmFreeMem, afmAnsiStrDispose, afmReleaseInterface);
    TDuplicatesMode = (dmNotAllow, dmAllowed, dmReplaceExisting);
  
    { THashTrie }
  