anchor.diff:        procedure Assign(aSourceField : TField); override; overload;
         procedure Assign (const aValue : String; const aBlankStringMeansNull : boolean); override; overload;
         function AsVariant: Variant; override;
  +      function CheckIfDifferentAndAssign(const aValue : String; const aBlankStringMeansNull : boolean) : boolean;
   
         function AsString (aShowTime : boolean) : String;
   
  
positive.code:     procedure Assign(aSource : TNullableString); overload;
      procedure Assign(aSourceField : TField); override; overload;
      procedure Assign (const aValue : String; const aBlankStringMeansNull : boolean); override; overload;
      function AsVariant: Variant; override;
      procedure Trim();
      function AsString : String;
  
negative.code: 
  procedure TNullableString.Assign(const aValue: String; const aBlankStringMeansNull: boolean);
  begin
    Self.CheckIfDifferentAndAssign(aValue, aBlankStringMeansNull);
  end;
  
  function TNullableString.CheckIfDifferentAndAssign(const aValue: String; const aBlankStringMeansNull: boolean): boolean;
  begin
    if aBlankStringMeansNull and (aValue = '') then
    begin
      Result := Self.NotNull;
      Self.IsNull:= true
    end
    else
    begin
      Result := aValue <> FValue;
      Self.Value:= aValue;
    end;
  end;
  
  function TNullableString.AsVariant: Variant;
  