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