anchor.diff:      function ToList(ListClass: TListClass; Sync: Boolean = True;
         ReadWriteSync: Boolean = False): IList; override;
       function ToArrayList(Sync: Boolean = True;
  -      ReadWriteSync: Boolean = False): TArrayList; virtual;
  +      ReadWriteSync: Boolean = False): IArrayList; override;
  +    procedure TrimExcess; override;
     end;
   
     { function ContainsValue is an O(1) operation in THashedMap,
  
positive.code: end;
  
  function THashMap.ToArrayList(Sync: Boolean; ReadWriteSync: Boolean
    ): TArrayList;
  var
    I: Integer;
  begin
  
negative.code:   for I := 0 to Count - 1 do
      if (VarIsOrdinal(FKeys[I])) and (FKeys[I] >= 0)
        and (FKeys[I] <= MaxListSize) then Result.Put(FKeys[I], FValues[I]);
  end;
  
  procedure THashMap.TrimExcess;
  begin
    FKeys.TrimExcess;
    FValues.TrimExcess;
  end;
  
  function THashMap.GetKeys: IImmutableList;
  