anchor.diff:      FFieldName: string;
       FDataType : TFieldType;
       FOperationKind : TmGroupByOperationKind;
  -    FFormula : String;
  +    FFormula : TNullableString;
  +    FDisplayFormat: TNullableString;
  +    FDisplayLabel : TNullableString;
     public
       constructor Create;
  +    destructor Destroy; override;
       procedure Assign(const aSource : TmGroupByDef);
       class function CheckOperationKindCompatibility(const aOperationKind : TmGroupByOperationKind; const aDataType : TFieldType) : boolean;
   
       property FieldName : string read FFieldName write FFieldName;
       property DataType : TFieldType read FDataType write FDataType;
       property OperationKind : TmGroupByOperationKind read FOperationKind write FOperationKind;
  -    property Formula: String read FFormula write FFormula;
  +    property Formula: TNullableString read FFormula;
  +    property DisplayLabel : TNullableString read FDisplayLabel;
  +    property DisplayFormat : TNullableString read FDisplayFormat;
     end;
   
     { TmGroupByDefs }
  
positive.code: uses
    contnrs, db, variants, Classes,
    mDataProviderInterfaces,
    mIntList, mMaps, mSummary;
  
  type
  
  
negative.code:   FFieldName:= aSource.FieldName;
    FDataType := aSource.DataType;
    FOperationKind := aSource.OperationKind;
    FFormula.Assign(aSource.Formula);
    FDisplayLabel.Assign(aSource.DisplayLabel);
    FDisplayFormat.Assign(aSource.DisplayFormat);
  end;
  
  class function TmGroupByDef.CheckOperationKindCompatibility(const aOperationKind: TmGroupByOperationKind; const aDataType: TFieldType): boolean;
  