anchor.diff:      else
         Result := tmpBool <> Self.Value;
       if Result then
  -      Self.Value:= tmpBool;
  -  end;
  -  Self.FTagChanged:= Result;
  +      Self.InternalSetValue(tmpBool);
  +  end;
  +  Self.FTagChanged:= Result or Self.FTagChanged;
   end;
   
   class function TNullableBoolean.StringToVariant(const aValue: String): Variant;
  
positive.code: 
  procedure TNullableDouble.SetValue(AValue: Double);
  begin
    if FFractionalPartDigits > 0 then
      FValue:= RoundToExt(AValue, FRoundingMethod, FFractionalPartDigits)
    else
      FValue:= aValue;
    FIsNull := false;
  end;
  
  
negative.code: 
  procedure TNullableColor.SetValue(AValue: TColor);
  begin
    InternalSetValue(AValue);
    FTagChanged:= false;
  end;
  
  procedure TNullableColor.InternalSetValue(AValue: TColor);
  begin
    FValue:= aValue;
    FIsNull:= false;
  end;
  
  constructor TNullableColor.Create();
  