protected bool Equals(GROUPQueryInfo obj)
 {
     return(GROUPQuery.AreEqual(obj.GROUPQuery) &&
            GROUPORDERQuery.AreEqual(obj.GROUPORDERQuery) &&
            PropertyExpressions.AreEqual(obj.PropertyExpressions) &&                                                 //OperandProperty имеет перегруженный метод Equals который вполне подходит для сранения элементов коллекции
            SummaryDescriptors.AreEqual(obj.SummaryDescriptors, new ServerModeSummaryDescriptorEqualityComparer())); //ServerModeSummaryDescriptor реализует сравнение Equals "по умолчанию" которое НЕ подходит для сранения элементов коллекции
 }
 protected bool Equals(GROUPQueryInfo obj)
 {
     return GROUPQuery.AreEqual(obj.GROUPQuery) &&
            GROUPORDERQuery.AreEqual(obj.GROUPORDERQuery) &&
            PropertyExpressions.AreEqual(obj.PropertyExpressions) && //OperandProperty имеет перегруженный метод Equals который вполне подходит для сранения элементов коллекции
            SummaryDescriptors.AreEqual(obj.SummaryDescriptors, new ServerModeSummaryDescriptorEqualityComparer()); //ServerModeSummaryDescriptor реализует сравнение Equals "по умолчанию" которое НЕ подходит для сранения элементов коллекции
 }