anchor.diff:      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;
  
positive.code:     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;
    public
      destructor Destroy; override;
  
  
negative.code: end;
  
  {$IFDEF SUPPORTS_GENERICS}
  function TResource.ParseGenericResponse<T>(Response: string): T;
  begin
    if Trim(Response).IsEmpty then
      Exit(Default(T));
  
    Result := TJsonUtil.UnMarshal<T>(Response);
  end;
  
  function TResource.Get<T>(): T;
  begin
    Result := ParseGenericResponse<T>(Self.Get);
  end;
  
  function TResource.Post<T>(Entity: TObject): T;
  begin
    SetContent(Entity);
    Result := ParseGenericResponse<T>(FRestClient.DoRequest(METHOD_POST, Self));
  end;
  
  function TResource.Post<T>(Content: string): T;
  begin
    Result := ParseGenericResponse<T>(Post(Content));
  end;
  
  function TResource.Put<T>(Entity: TObject): T;
  begin
    SetContent(Entity);
    Result := ParseGenericResponse<T>(FRestClient.DoRequest(METHOD_PUT, Self));
  end;
  
  function TResource.Put<T>(Content: string): T;
  begin
    Result := ParseGenericResponse<T>(Content);
  end;
  
  function TResource.Patch<T>(Entity: TObject): T;
  begin
    SetContent(Entity);
    Result := ParseGenericResponse<T>(FRestClient.DoRequest(METHOD_PATCH, Self));
  end;
  
  function TResource.Patch<T>(Content: string): T;
  begin
    Result := ParseGenericResponse<T>(Patch(Content));
  end;
  {$ELSE}
  
  function TResource.Get(AListClass, AItemClass: TClass): TObject;
  var
    vResponse: string;
  