anchor.diff:      function EntityRequest(Entity: TObject; ResultClass: TClass; Method: TRequestMethod; AHandler: TRestResponseHandler = nil): TObject;
       function ContentRequest(Content: TStream; Method: TRequestMethod; AHandler: TRestResponseHandler = nil): string; overload;
       function ContentRequest(Content: TStream; ResultClass: TClass; Method: TRequestMethod; AHandler: TRestResponseHandler  = nil): TObject; overload;
  +    {$IFDEF SUPPORTS_GENERICS}
  +    function ParseGenericResponse<T>(Response: string): T;
  +    {$ENDIF}
     public
       destructor Destroy; override;
   
  
positive.code: end;
  
  {$IFDEF SUPPORTS_GENERICS}
  function TResource.Get<T>(): T;
  var
    vResponse: string;
  begin
    vResponse := Self.Get;
    if trim(vResponse) <> '' then
      Result := TJsonUtil.UnMarshal<T>(vResponse)
    else
      result := Default(T);
  end;
  
  function TResource.Post<T>(Entity: TObject): T;
  var
    vResponse: string;
  begin
    SetContent(Entity);
  
    vResponse := FRestClient.DoRequest(METHOD_POST, Self);
  
    if trim(vResponse) <> '' then
      Result := TJsonUtil.UnMarshal<T>(vResponse)
    else
      Result := Default(T);
  end;
  
  function TResource.Post<T>(Content: string): T;
  var
    vResponse: string;
  begin
    vResponse := Post(Content);
  
    if Trim(vResponse) <> '' then
      Result := TJsonUtil.UnMarshal<T>(vResponse)
    else
      Result := Default(T);
  end;
  
  function TResource.Put<T>(Entity: TObject): T;
  var
    vResponse: string;
  begin
    SetContent(Entity);
  
    vResponse := FRestClient.DoRequest(METHOD_PUT, Self);
  
    if trim(vResponse) <> '' then
      Result := TJsonUtil.UnMarshal<T>(vResponse)
    else
      Result := Default(T);
  end;
  
  function TResource.Patch<T>(Entity: TObject): T;
  var
    vResponse: string;
  begin
    SetContent(Entity);
  
    vResponse := FRestClient.DoRequest(METHOD_PATCH, Self);
  
    if trim(vResponse) <> '' then
      Result := TJsonUtil.UnMarshal<T>(vResponse)
    else
      Result := Default(T);
  end;
  {$ELSE}
  function TResource.Get(AListClass, AItemClass: TClass): TObject;
  var
    vResponse: string;
  
negative.code:     function Post<T>(Entity: TObject): T;overload;
      function Post<T>(Content: string): T;overload;
      function Put<T>(Entity: TObject): T;overload;
      function Put<T>(Content: string): T;overload;
      function Patch<T>(Entity: TObject): T;overload;
      function Patch<T>(Content: string): T;overload;
      {$ELSE}
      function Get(AListClass, AItemClass: TClass): TObject;overload;
      function Post(Adapter: IJsonListAdapter): TObject;overload;
  