anchor.diff:      trieAllocators.DeAlloc(TmpNode);
     end;
     AIterator.BackTrack := nil;
  +end;
  +
  +procedure THashTrie.FreeKVPTreeNode(var CurNode: PKeyValuePairNode);
  +var
  +  kvp : PKeyValuePair;
  +begin
  +  kvp := @CurNode^.KVP;
  +  FreeKey(kvp^.Key, kvp^.KeySize);
  +  if kvp^.Value <> nil then
  +    FreeValue(kvp^.Value);
  +  {$IFDEF DEBUG}
  +  InvalidateKVPTreeNode(CurNode);
  +  {$ENDIF}
  +  trieAllocators.DeAlloc(CurNode);
  +  CurNode := nil;
   end;
   
   function THashTrie.InternalFind(key: Pointer; KeySize: Cardinal; out
  
positive.code: 
  procedure THashTrie.FreeKey(key: Pointer; KeySize: Cardinal);
  begin
  end;
  
  procedure THashTrie.FreeValue(value: Pointer);
  
negative.code:     PHashTrieNodeArray(Node^.Children)^[ChildIndex] := nil;
    end
    else ChildIndex := GetChildIndex(PTrieBranchNode(Node), GetBitFieldIndex(Hash, TrieDepth - 1));
    Result := AddOrReplaceKVPTreeNode(PHashTrieNodeArray(Node^.Children)^[ChildIndex], kvp);
    if Result then
      inc(FCount);
  end;
  
  function THashTrie.AddOrReplaceKVPTreeNode(var Root: PKeyValuePairNode; const
      kvp: TKeyValuePair): Boolean;
  var
    Node, PrevNode : PKeyValuePairNode;
    WentRight : Boolean;
  