anchor.diff:    end;
   end;
   
  -{ TFDAdaptedDataSetWriter }
  +{ TFDDataSetWriter }
   
  -procedure TFDAdaptedDataSetWriter.WriteTo(const AValue: TValue; const AMediaType: TMediaType;
  +procedure TFDDataSetWriter.WriteTo(const AValue: TValue; const AMediaType: TMediaType;
     AOutputStream: TStream; const AActivation: IMARSActivation);
   var
  -  LDataset: TFDAdaptedDataSet;
  +  LDataset: TFDDataSet;
   begin
  -  LDataset := AValue.AsType<TFDAdaptedDataSet>;
  +  LDataset := AValue.AsType<TFDDataSet>;
   
     if AMediaType.Matches(TMediaType.APPLICATION_XML) then
       LDataSet.SaveToStream(AOutputStream, sfXML)
     else if AMediaType.Matches(TMediaType.APPLICATION_JSON_FireDAC) then
  -    StringToStream(AOutputStream, TFDDataSets.DataSetToEncodedBinaryString(LDataSet), TEncoding.UTF8)
  +    TArrayFDDataSetWriter.WriteDataSets(TValue.From<TArray<TFDDataSet>>([LDataSet]),
  +      AMediaType, AOutputStream, AActivation)
     else if AMediaType.Matches(TMediaType.APPLICATION_OCTET_STREAM) then
       LDataSet.SaveToStream(AOutputStream, sfBinary)
     else
  
positive.code:   , Produces(TMediaType.APPLICATION_JSON_FIREDAC)
    , Produces(TMediaType.APPLICATION_OCTET_STREAM)
    ]
    TFDAdaptedDataSetWriter = class(TInterfacedObject, IMessageBodyWriter)
      procedure WriteTo(const AValue: TValue; const AMediaType: TMediaType;
        AOutputStream: TStream; const AActivation: IMARSActivation);
    end;
  
    [ Produces(TMediaType.APPLICATION_JSON_FIREDAC) ]
    TArrayFDCustomQueryWriter = class(TInterfacedObject, IMessageBodyWriter)
      procedure WriteTo(const AValue: TValue; const AMediaType: TMediaType;
        AOutputStream: TStream; const AActivation: IMARSActivation);
    end;
  
  
negative.code:   , MARS.Rtti.Utils, MARS.Data.FireDAC.Utils
  ;
  
  { TArrayFDDataSetWriter }
  
  class procedure TArrayFDDataSetWriter.WriteDataSets(const ADataSets: TValue;
    const AMediaType: TMediaType; AOutputStream: TStream;
    const AActivation: IMARSActivation);
  var
    LWriter: TArrayFDDataSetWriter;
  begin
    LWriter := TArrayFDDataSetWriter.Create;
    try
      LWriter.WriteTo(ADataSets, AMediaType, AOutputStream, AActivation);
    finally
      LWriter.Free;
    end;
  end;
  
  procedure TArrayFDDataSetWriter.WriteTo(const AValue: TValue; const AMediaType: TMediaType;
    AOutputStream: TStream; const AActivation: IMARSActivation);
  var
    LResult: TJSONObject;
  