anchor.diff:      function GetKeys: IImmutableList; override;
       function GetValues: IImmutableList; override;
       function GetKey(const AValue: Variant): Variant; override;
  -    function Get(const AKey: Variant): Variant; overload; override;
  -    procedure Put(const AKey, AValue: Variant); override;
       procedure InitData(AKeys, AValues: IList);
     public
       constructor Create(ACapacity: Integer = 16; Factor: Single = 0.75;
         Sync: Boolean = True; ReadWriteSync: Boolean = False); overload; override;
       procedure Assign(const Source: IMap); override;
  +    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;
       procedure Put(const AList: IImmutableList); overload; override;
       procedure Put(const AMap: IMap); overload; override;
       procedure Put(const Container: Variant); overload; override;
  
positive.code: begin
    Create(Sync);
  end;
  {$ENDIF}
  
  destructor TAbstractMap.Destroy;
  
negative.code: 
  class function TSmartObject.New(const AClass: TClass): ISmartObject;
  begin
    Result := TSmartObject.Create(AClass.Create) as ISmartObject;
  end;
  
  function TSmartObject.Value: TObject;
  