anchor.diff:    Result := TNullableTime.VariantToString(Self.AsVariant);
   end;
   
  -function TNullableTime.AsJson(const aFieldName: String; const aSkipIfNull, aAddComma: boolean): String;
  +function TNullableTime.AsJson(const aFieldName: String; const aSkipIfNull: boolean): String;
   begin
     if Self.IsNull and aSkipIfNull then
       Result := ''
     else
  -  begin
       Result := '"' + aFieldName + '":"' + ISOTimeToStr(Self.Value) + '"';
  -    if aAddComma then
  -      Result := Result + ',';
  -  end;
   end;
   
   { TNullablesList }
  
positive.code:   end;
  end;
  
  function TNullableDateTime.AsJson(const aFieldName: String; const aSkipIfNull, aAddComma: boolean): String;
  begin
    if Self.IsNull and aSkipIfNull then
      Result := ''
    else
    begin
      Result := '"' + aFieldName + '":"' + ISODateTimeToStr(Self.Value) + '"';
      if aAddComma then
        Result := Result + ',';
    end;
  end;
  
  { TAbstractNullable }
  
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 }
  
  