anchor.diff:  
       procedure SetNull;
       function IsNull : boolean;
  +
  +    procedure Assign(aValue : TNullableString); overload;
  +    procedure Assign(aValue : TNullableInteger); overload;
  +    procedure Assign(aValue : TNullableDateTime); overload;
  +    procedure Assign(aValue : TNullableDouble); overload;
  +
       property Name : String read FName write FName;
       property DataType : TmParameterDataType read GetParameterDataType write SetParameterDataType;
       property AsString : String read GetAsString write SetAsString;
  
positive.code: interface
  
  uses
    DB, Contnrs, SysUtils;
  
  type
    TmDataConnectionException = class (Exception);
  
negative.code:   Result := (FValue = Null);
  end;
  
  procedure TmQueryParameter.Assign(aValue: TNullableString);
  begin
    if aValue.IsNull then
      Self.SetNull
    else
      Self.AsString:= aValue.Value;
  end;
  
  procedure TmQueryParameter.Assign(aValue: TNullableInteger);
  begin
    if aValue.IsNull then
      Self.SetNull
    else
      Self.AsInteger:= aValue.Value;
  end;
  
  procedure TmQueryParameter.Assign(aValue: TNullableDateTime);
  begin
    if aValue.IsNull then
      Self.SetNull
    else
      Self.AsDateTime:= aValue.Value;
  end;
  
  procedure TmQueryParameter.Assign(aValue: TNullableDouble);
  begin
    if aValue.IsNull then
      Self.SetNull
    else
      Self.AsFloat:= aValue.Value;
  end;
  
  
  function TmDatabaseConnectionInfo.GetDatabaseName: String;
  begin
  