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: 
  procedure RegisterReadersAndWriters;
  begin
    TMARSMessageBodyRegistry.Instance.RegisterWriter<TFDDataSet>(TFDDataSetWriter);
  
    TMARSMessageBodyRegistry.Instance.RegisterWriter(
      TArrayFDDataSetWriter
    , function (AType: TRttiType; const AAttributes: TAttributeArray; AMediaType: string): Boolean
      begin
        Result := Assigned(AType) and AType.IsDynamicArrayOf<TFDDataSet>;
  