anchor.diff:      Result := False;
       exit;
     end;
  -  if FTrieDepth = TrieDepth32Bits then
  -  begin
  -    AIterator.LastResult32 := AIterator.LastResult32 shr BitsForChildIndexPerBucket;
  -    AIterator.LastResult32 := AIterator.LastResult32 and not Integer(BucketMask);
  -  end
  -  else
  -  begin
  -    AIterator.LastResult64 := AIterator.LastResult64 shr BitsForChildIndexPerBucket;
  -    AIterator.LastResult64 := AIterator.LastResult64 and not Int64(BucketMask);
  +  case FTrieDepth of
  +    TrieDepth16Bits :
  +    begin
  +      AIterator.LastResult16 := AIterator.LastResult16 shr BitsForChildIndexPerBucket;
  +      AIterator.LastResult16 := AIterator.LastResult16 and not Word(BucketMask);
  +    end;
  +    TrieDepth32Bits :
  +    begin
  +      AIterator.LastResult32 := AIterator.LastResult32 shr BitsForChildIndexPerBucket;
  +      AIterator.LastResult32 := AIterator.LastResult32 and not Integer(BucketMask);
  +    end;
  +    else
  +    begin
  +      AIterator.LastResult64 := AIterator.LastResult64 shr BitsForChildIndexPerBucket;
  +      AIterator.LastResult64 := AIterator.LastResult64 and not Int64(BucketMask);
  +    end;
     end;
     Result := True;
   end;
  
positive.code:   if AIterator.Level = 0 then
    begin
      AIterator.ANodeStack[0] := @FRoot^.Base;
      if ATrieDepth = TrieDepth32Bits then
        AIterator.LastResult32 := 0
      else AIterator.LastResult64 := 0;
    end;
    repeat
      while AIterator.BreadCrumbs[AIterator.Level] < ChildrenPerBucket do
      begin
        if GetBusyIndicator(AIterator.ANodeStack[AIterator.Level], AIterator.BreadCrumbs[AIterator.Level] ) then
        begin
          if ATrieDepth = TrieDepth32Bits then
            AIterator.LastResult32 := AIterator.LastResult32 or AIterator.BreadCrumbs[AIterator.Level]
          else AIterator.LastResult64 := AIterator.LastResult64 or AIterator.BreadCrumbs[AIterator.Level];
          inc(AIterator.Level);
          if AIterator.Level >= ATrieDepth then
          begin
  
negative.code:     BreadCrumbs : array[0..MaxTrieDepth - 1] of SmallInt;
      ANodeStack : array[0..MaxTrieDepth - 1] of PTrieBaseNode;
      case Integer of
        TrieDepth16Bits : (LastResult16 : Word;);
        TrieDepth32Bits : (LastResult32 : Integer;);
        TrieDepth64Bits : (LastResult64 : Int64;);
        0               : (LastResultPtr : Pointer;);
    end;
  
  