anchor.diff:  
   { TNullableStringRecord }
   
  -procedure TNullableStringRecord.CreateAsNull;
  +procedure TNullableStringRecord.SetNull;
   begin
     IsNull:= true;
   end;
   
  -procedure TNullableStringRecord.CreateWithValue(const aValue: String);
  +procedure TNullableStringRecord.SetValue(const aValue: String);
   begin
     IsNull := false;
     Value:= aValue;
  
positive.code: end;
  
  procedure TNullableDoubleRecord.Assign(const aValue: Variant);
  begin
    CheckIfDifferentAndAssign(aValue);
  end;
  
  function TNullableDoubleRecord.CheckIfDifferentAndAssign(const aValue: Variant): boolean;
  var
    tmpDouble : double;
  begin
    if VarIsNull(aValue) then
    begin
      Result := not IsNull;
      CreateAsNull;
    end
    else
    begin
      tmpDouble := aValue;
      if IsNull then
        Result := true
      else
        Result := not mFloatsManagement.DoublesAreEqual(tmpDouble, Value);
      if Result then
        CreateWithValue(tmpDouble);
    end;
  end;
  
  function TNullableDoubleRecord.AsVariant: Variant;
  begin
  
negative.code: procedure TNullableDoubleRecord.Assign(const aSourceField: TField);
  begin
    if aSourceField.IsNull then
      SetNull
    else
      SetValue(aSourceField.AsFloat);
  end;
  
  procedure TNullableDoubleRecord.Assign(const aValue: String);
  