anchor.diff:      procedure WriteDateTimeValue(const AName: string; const AValue: TDateTime;
         const AInputIsUTC: Boolean = False);
       procedure WriteUnixTimeValue(const AName: string; const AValue: TDateTime);
  -    procedure WriteTValue(const AName: string; const AValue: TValue);
  +    procedure WriteTValue(const AName: string; const AValue: TValue; const AOptions: TMARSJSONSerializationOptions); overload;
  +    procedure WriteTValue(const AName: string; const AValue: TValue); overload;
       procedure WriteArrayValue(const AName: string; const AArray: TJSONArray); overload; inline;
       procedure WriteArrayValue<T: record>(const AName: string; const AArray: TArray<T>); overload; inline;
   
  
positive.code:     const AValue: TValue; const AJSONObject: TJSONObject; var AAccept: Boolean);
  
    TJSONRawString = type string;
  
  {$ifndef DelphiXE6_UP}
    TJSONArrayEnumerator = class
  
negative.code: 
  procedure TJSONObjectHelper.WriteTValue(const AName: string;
    const AValue: TValue);
  begin
    WriteTValue(AName, AValue, DefaultMARSJSONSerializationOptions);
  end;
  
  procedure TJSONObjectHelper.WriteTValue(const AName: string;
    const AValue: TValue; const AOptions: TMARSJSONSerializationOptions);
  var
    LValue: TJSONValue;
  begin
    LValue := TValueToJSONValue(AValue);
  
    if AOptions.SkipEmptyValues then
    begin
      // skip empty string
      if Assigned(LValue) and (LValue is TJSONString) and (TJSONString(LValue).Value = '') then
      begin
        FreeAndNil(LValue);
        Exit;
      end;
  
        // skip false boolean values
      if Assigned(LValue) and (LValue is TJSONBool) and (TJSONBool(LValue).AsBoolean = false) then
      begin
        FreeAndNil(LValue);
        Exit;
      end;
  
      // skip empty arrays
      if Assigned(LValue) and (LValue is TJSONArray) and (TJSONArray(LValue).Count = 0) then
      begin
        FreeAndNil(LValue);
        Exit;
      end;
  
      // skip empty objects
      if Assigned(LValue) and (LValue is TJSONObject) and (TJSONObject(LValue).Count = 0) then
      begin
        FreeAndNil(LValue);
        Exit;
      end;
    end;
  
    AddPair(AName, LValue);
  