anchor.diff:      procedure PutAll(const ConstArray: array of const); overload; virtual; abstract;
       function ToList(ListClass: TListClass; Sync: Boolean = True;
         ReadWriteSync: Boolean = False): IList; virtual; abstract;
  +    function ToArrayList(Sync: Boolean = True;
  +      ReadWriteSync: Boolean = False): IArrayList; virtual; abstract;
  +    procedure TrimExcess; virtual; abstract;
       property Count: Integer read GetCount;
       property Key[const AValue: Variant]: Variant read GetKey;
       property Value[const AKey: Variant]: Variant read GetValue write PutValue; default;
  
positive.code: end;
  
  function THashMap.ToArrayList(Sync: Boolean; ReadWriteSync: Boolean
    ): TArrayList;
  var
    I: Integer;
  begin
  
negative.code:     procedure PutAll(const ConstArray: array of const); overload;
      function ToList(ListClass: TListClass; Sync: Boolean = True;
        ReadWriteSync: Boolean = False): IList;
      function ToArrayList(Sync: Boolean = True;
        ReadWriteSync: Boolean = False): IArrayList;
      procedure TrimExcess;
      property Count: Integer read GetCount;
      property Key[const AValue: Variant]: Variant read GetKey;
      property Value[const AKey: Variant]: Variant read GetValue write PutValue; default;
  