anchor.diff:      end;
   
       tmpIndex := FHorizontalKeysIndex;
  -    parentKeyValue := '';
  +    parentKeyValue := EMPTY_STRING_VALUE;
       for k := 0 to FHorizontalGroupByDefs.Count -1 do
       begin
         tmpValue := FDataProvider.GetDatum(i).GetPropertyByFieldName(FHorizontalGroupByDefs.Get(k).FieldName);
         tmpKeyValue := GetIndexKeyValue(tmpValue, FHorizontalGroupByDefs.Get(k));
         FHorizontalValues.Get(k).AddValueIfMissing(tmpKeyValue);
  -      if parentKeyValue <> '' then
  +      if parentKeyValue <> EMPTY_STRING_VALUE then
           tmpIndex := tmpIndex.AddSubIndexForKey(parentKeyValue);
         parentKeyValue := tmpKeyValue;
         tmpIndex.AddValueIfMissing(tmpKeyValue);
  
positive.code:   FFieldName:= aSource.FieldName;
    FDataType := aSource.DataType;
    FOperationKind := aSource.OperationKind;
    FFormula := aSource.Formula;
  end;
  
  class function TmGroupByDef.CheckOperationKindCompatibility(const aOperationKind: TmGroupByOperationKind; const aDataType: TFieldType): boolean;
  
negative.code:   Result := FValues.Strings[aIndex];
  end;
  
  { TmGroupByDefs }
  
  constructor TmGroupByDefs.Create;
  