anchor.diff:    );
   end;
   
  +procedure TMARSClientResourceJSON.RefreshResponse(const AContent: TStream);
  +var
  +  LSubscriber: TNotifyEvent;
  +begin
  +  if Assigned(FResponse) then
  +    FResponse.Free;
  +  FResponse := StreamToJSONValue(AContent);
  +
  +  for LSubscriber in FNotifyList do
  +    LSubscriber(Self);
  +end;
  +
  +procedure TMARSClientResourceJSON.RemoveJSONChangedEvent(
  +  const ANotify: TNotifyEvent);
  +var
  +  LIndex: Integer;
  +begin
  +  LIndex := FNotifyList.IndexOf(ANotify);
  +  if LIndex <> -1 then
  +    FNotifyList.Delete(LIndex);
  +end;
  +
   function TMARSClientResourceJSON.ResponseAs<T>: T;
   begin
     Result := (Response as TJSONObject).ToRecord<T>;
  
positive.code:   FResponse := TJSONObject.Create;
    SpecificAccept := TMediaType.APPLICATION_JSON;
    SpecificContentType := TMediaType.APPLICATION_JSON;
  end;
  
  destructor TMARSClientResourceJSON.Destroy;
  begin
    FResponse.Free;
    inherited;
  end;
  
  function TMARSClientResourceJSON.GetResponseAsString: string;
  
negative.code: 
  { TMARSClientResourceJSON }
  
  procedure TMARSClientResourceJSON.AddJSONChangedEvent(
    const ANotify: TNotifyEvent);
  begin
    if not FNotifyList.Contains(ANotify) then
      FNotifyList.Add(ANotify);
  end;
  
  procedure TMARSClientResourceJSON.AfterGET(const AContent: TStream);
  begin
    inherited;
    RefreshResponse(AContent);
  end;
  
  procedure TMARSClientResourceJSON.AfterPOST(const AContent: TStream);
  begin
    inherited;
    RefreshResponse(AContent);
  end;
  
  constructor TMARSClientResourceJSON.Create(AOwner: TComponent);
  