anchor.diff:  
       property Key : TListDatumKey read FKey;
       property Description : string read FDescription write FDescription;
  -    property Value : TNullableValue read FValue;
     end;
   
   
  
positive.code: var
    newDatum: TListDatum;
  begin
    newDatum := TListDatum.Create(FList.Count);
    newDatum.Value.DataType:= FValueDataType;
    newDatum.Value.Assign(aValue);
    newDatum.Description := aDescription;
    FList.Add(newDatum);
  end;
  
  { TListDatum }
  
  constructor TListDatum.Create(const aId : integer);
  begin
    FKey := TListDatumKey.Create(aId);
    FDescription:= '';
    FValue:= TNullableValue.Create();
  end;
  
  destructor TListDatum.Destroy;
  begin
    FKey.Free;
    FValue.Free;
    inherited;
  end;
  
  
negative.code: 
  class function TListDatum.GetKeyField: String;
  begin
    Result := FLD_VALUE;
  end;
  
  function TListDatum.GetPropertyByFieldName(const aFieldName: String): Variant;
  begin
    Result := Null;
    if aFieldName = FLD_DESCRIPTION then
      Result := FDescription
    else if aFieldName = FLD_VALUE then
      Result := Key.Value.AsVariant;
  end;
  
  { TListDatumKey }
  
  constructor TListDatumKey.Create;
  begin
    FValue := TNullableValue.Create();
  end;
  
  destructor TListDatumKey.Destroy;
  begin
    FValue.Free;
  end;
  
  procedure TListDatumKey.Assign(aSource: TObject);
  begin
    FValue.Assign((aSource as TListDatumKey).Value);
  end;
  
  function TListDatumKey.AsString: string;
  begin
    Result := FValue.AsString;
  end;
  
  
  