anchor.diff:      destructor Destroy; override;
       procedure Clear; virtual;
       procedure InitIterator(out AIterator : TTrieIterator);
  -    procedure Pack;
  +    procedure Pack; virtual;
       property Count : Integer read FCount;
       property Stats : TTrieStats read FStats;
     end;
  
positive.code:               PackingNode := True;
                dec(AIterator.ANodeStack[AIterator.Level]^.ChildrenCount);
                SetBusyIndicator(AIterator.ANodeStack[AIterator.Level], BitFieldIndex, False);
                FreeTrieNode(@PTrieNodeArray(PTrieBranchNode(AIterator.ANodeStack[AIterator.Level])^.Children)^[ChildIndex * Integer(LeafSize)]^.Base, AIterator.Level + 1);
              end
              else { keep going, there's busy nodes on Children }
            else if PTrieNodeArray(PTrieBranchNode(AIterator.ANodeStack[AIterator.Level])^.Children)^[ChildIndex]^.Base.Busy = 0 then
  
negative.code:     FLastMidBranchNode : Byte;
      function NewTrieBranchNode : PTrieBranchNode;
      function AddChild(ANode : PTrieBranchNode; Level : Byte) : Integer;
      function NextNode(ACurNode : PTrieBranchNode; ALevel, AChildIndex : Byte) : Pointer; inline;
      function GetItem(Index: Integer): Pointer;
      function IteratorBacktrack(var AIterator : TTrieIterator) : Boolean;
  