anchor.diff:        function AsVariant: Variant; override;
         function CheckIfDifferentAndAssign(const aValue: Variant): boolean;
   
  -      class function StringToVariant(const aValue : String) : Variant;
  -
  -      function AsString (aShowTime : boolean) : String;
  +      class function StringToVariant(const aValue : String): Variant;
  +      class function VariantToString(const aValue: Variant; const aShowTime: boolean): String;
  +
  +      function AsString (const aShowTime : boolean) : String;
   
         property Value : TDateTime read GetValue write SetValue;
     end;
  
positive.code: class function TNullableString.StringToVariant(const aValue: String): Variant;
  begin
    if aValue = '' then
      Result := Null
    else
      Result := aValue;
  end;
  
  function TNullableString.AsString: String;
  begin
    if Self.IsNull then
      Result := ''
    else
      Result := Self.Value;
  end;
  
  { TNullableDouble }
  
negative.code:       raise Exception.Create('This string cannot be converted to date: ' + aValue);
  end;
  
  class function TNullableDateTime.VariantToString(const aValue: Variant; const aShowTime: boolean): String;
  begin
    if VarIsNull(aValue) then
      Result := ''
    else
    begin
      if (aShowTime) then
      begin
        Result := DateTimeToStr(aValue, true);
      end
      else
        Result := DateToStr(aValue);
    end;
  end;
  
  function TNullableDateTime.AsString(const aShowTime: boolean): String;
  begin
    Result := TNullableDateTime.VariantToString(Self.AsVariant, aShowTime);
  end;
  
  { TAbstractNullable }
  