anchor.diff:    Result := Index > -1;
   end;
   
  -procedure THashMap.Put(const AList: IImmutableList);
  -var
  -  I, N: Integer;
  -begin
  -  N := AList.Count;
  -  if Odd(N) then raise EArrayListError.Create('The Count of Alist must be even.');
  -  I := 0;
  -  while I < N do begin
  -      Put(AList[I], AList[I + 1]);
  -      Inc(I, 2);
  -  end;
  -end;
  -
  -procedure THashMap.Put(const AMap: IMap);
  -begin
  -  PutAll(AMap);
  -end;
  -
  -procedure THashMap.Put(const Container: Variant);
  -var
  -  I, N: Integer;
  -begin
  -  if VarIsList(Container) then
  -    Put(VarToList(Container))
  -  else if VarIsMap(Container) then
  -    PutAll(VarToMap(Container))
  -  else if VarIsArray(Container) then begin
  -    if Odd(Length(Container)) then raise EArrayListError.Create('The array length must be even.');
  -    I := VarArrayLowBound(Container, 1);
  -    N := VarArrayHighBound(Container, 1);
  -    while I < N do begin
  -      Put(Container[I], Container[I + 1]);
  -      Inc(I, 2);
  -    end;
  -  end;
  -end;
  -
  -procedure THashMap.Put(const ConstArray: array of const);
  -var
  -  I, N: Integer;
  -begin
  -  N := Length(ConstArray);
  -  if Odd(N) then raise EArrayListError.Create('The array length must be even.');
  -  I := 0;
  -  while I < N do begin
  -      Put(VarRecToVar(ConstArray[I]), VarRecToVar(ConstArray[I + 1]));
  -      Inc(I, 2);
  -  end;
  -end;
  -
   function THashMap.Add(const AKey, AValue: Variant): Boolean;
   var
     Index: Integer;
  
positive.code:     constructor Create(ACapacity: Integer = 4; Sync: Boolean = True;
        ReadWriteSync: Boolean = False); overload; override;
      function Add(const Value: Variant): Integer; override;
      procedure AddAll(const AList: IImmutableList); overload; override;
      procedure AddAll(const Container: Variant); overload; override;
      procedure AddAll(const ConstArray: array of const); overload; override;
      procedure Clear; override;
      function Contains(const Value: Variant): Boolean; override;
      function Delete(Index: Integer): Variant; override;
      procedure DeleteRange(Index, ACount: Integer); override;
      procedure Exchange(Index1, Index2: Integer); override;
  
negative.code:     function Get(const AKey: Variant): Variant; overload; override;
      function Get(const AKey: Variant; out AValue: Variant): Boolean; overload; override;
      procedure Put(const AKey, AValue: Variant); overload; override;
      function Add(const AKey, AValue: Variant): Boolean; override;
      procedure Clear; override;
      function ContainsKey(const AKey: Variant): Boolean; override;
      function ContainsValue(const AValue: Variant): Boolean; override;
      function Delete(const AKey: Variant): Variant; override;
      function ToList(ListClass: TListClass; Sync: Boolean = True;
        ReadWriteSync: Boolean = False): IList; override;
      function ToArrayList(Sync: Boolean = True;
  