anchor.diff:    end;
   end;
   
  +procedure TTrie.FreeTopNodeChildren(var AIterator: TTrieIterator);
  +begin
  +  FreeMem(PTrieBranchNode(AIterator.NodeStack[AIterator.Level])^.Children);
  +  PTrieBranchNode(AIterator.NodeStack[AIterator.Level])^.Children := nil;
  +  inc(AIterator.BreadCrumbs[AIterator.Level]);
  +end;
  +
   function TTrie.GetObjectFromIterator(const _AIterator): Pointer;
   var
     AIterator : TTrieIterator absolute _AIterator;
  
positive.code:   if AIterator.NodeStack[AIterator.Level]^.ChildrenCount > 0 then
    begin
      ReallocMem(PTrieBranchNode(AIterator.NodeStack[AIterator.Level])^.Children,
                 AIterator.NodeStack[AIterator.Level]^.ChildrenCount * LeafSize);
      j := 0;
      for BitFieldIndex := 0 to ChildrenPerBucket - 1 do
        if GetBusyIndicator(AIterator.NodeStack[AIterator.Level], BitFieldIndex) then
        begin
          move(ChildrenBackup[BitFieldIndex * LeafSize],
               PTrieLeafNodeArray(PTrieBranchNode(AIterator.NodeStack[AIterator.Level])^.Children)^[j * LeafSize],
               LeafSize);
          SetChildIndex(PTrieBranchNode(AIterator.NodeStack[AIterator.Level]), BitFieldIndex, j);
          inc(j);
        end;
    end
    else
    begin
      FreeMem(PTrieBranchNode(AIterator.NodeStack[AIterator.Level])^.Children);
      PTrieBranchNode(AIterator.NodeStack[AIterator.Level])^.Children := nil;
      inc(AIterator.BreadCrumbs[AIterator.Level]);
    end;
  end;
  
  function TTrie.TrieDepthToHashSize(ATrieDepth: Byte): Byte;
  
negative.code:             end;
              dec(AIterator.NodeStack[AIterator.Level]^.ChildrenCount);
              SetBusyIndicator(AIterator.NodeStack[AIterator.Level], BitFieldIndex, False);
              FreeTrieNode(@PByteArray(PTrieBranchNode(AIterator.NodeStack[AIterator.Level])^.Children)^[Cardinal(ChildIndex) * AObjectSize], AIterator.Level + 1);
            end
            else if PackingNode then
              move(PByteArray(PTrieBranchNode(AIterator.NodeStack[AIterator.Level])^.Children)^[Cardinal(ChildIndex) * AObjectSize],
                   ChildrenBackup[Cardinal(BitFieldIndex) * AObjectSize],
                   AObjectSize);
          end;
        if PackingNode then
          PackNode(AIterator, ChildrenBackup, AObjectSize);
        dec(AIterator.Level);
      end;
      AIterator.Level := 0;
  