anchor.diff:  
   procedure TNullableBoolean.Assign(const aValue: Variant);
   begin
  -  if VarIsNull(aValue) then
  -    Self.IsNull:= true
  -  else
  -    Self.Value:= aValue;
  +  CheckIfDifferentAndAssign(aValue);
     SetTagChanged(false);
   end;
   
  
positive.code: end;
  
  class function TNullableDouble.StringToVariant(const aValue: String): Variant;
  begin
    if (aValue = '') then
      Result := Null
    else
      Result:= StrToFloat(aValue);
  end;
  
  class function TNullableDouble.VariantToString(const aValue: Variant; const aDisplayFormat: string): String;
  
negative.code: end;
  
  class function TNullableBoolean.StringToVariant(const aValue: String): Variant;
  var
    tmp : boolean;
  begin
    if (aValue = '') then
      Result := Null
    else
      if TryToUnderstandBooleanString(aValue, tmp) then
        Result := tmp
      else
        Result := Null;
  end;
  
  class function TNullableBoolean.VariantToString(const aValue: Variant): String;
  