anchor.diff:    end;
   
   
  +  { TNullableJsonHelper }
  +
  +  TNullableJsonHelper = class
  +  strict private
  +    FList : TStringList;
  +  public
  +    constructor Create;
  +    destructor Destroy; override;
  +
  +    procedure AddValue(const aFieldName: String; const aValue: TAbstractNullable; const aSkipIfNull: boolean);
  +    procedure AddJson(const aJsonString : String);
  +    function GetJson : String;
  +  end;
   
   
   implementation
  
positive.code:       function AsString (const aShowTime : boolean) : String; overload;
        function AsString : String; override; overload;
        function AsStringForFilename (const aShowTime, aUseSeparators: boolean): String;
        function AsJson(const aFieldName : String; const aSkipIfNull, aAddComma : boolean): String; override;
  
        property Value : TDateTime read GetValue write SetValue;
    end;
  
negative.code: uses
    sysutils, dateutils {$IFDEF FPC}, LazUtf8{$ENDIF}
    , mISOTime;
  
  { TNullableJsonHelper }
  
  constructor TNullableJsonHelper.Create;
  begin
    FList := TStringList.Create;
  end;
  
  destructor TNullableJsonHelper.Destroy;
  begin
    FList.Free;
    inherited Destroy;
  end;
  
  procedure TNullableJsonHelper.AddValue(const aFieldName: String; const aValue: TAbstractNullable; const aSkipIfNull: boolean);
  var
    tmp : String;
  begin
    tmp := aValue.AsJson(aFieldName, aSkipIfNull);
    if tmp <> '' then
      FList.Add(tmp);
  end;
  
  procedure TNullableJsonHelper.AddJson(const aJsonString: String);
  begin
    FList.Add(aJsonString);
  end;
  
  function TNullableJsonHelper.GetJson: String;
  var
    i : integer;
    sep : String;
  begin
    sep := '';
    Result := '';
    for i := 0 to FList.Count - 1 do
    begin
      Result := Result + sep + FList.Strings[i];
      sep := ',';
    end;
  end;
  
  { TNullableValue }
  
  