internal virtual void CollectForCompleteListOfProperties(ICollection <T> descriptors, int[] sortedProperties)
 {
     for (int i = 0; i < sortedProperties.Length; i++)
     {
         PropertySet firstSet = Next.get(sortedProperties[i]);
         if (firstSet != null)
         {
             firstSet.CollectForCompleteListOfProperties(descriptors, sortedProperties, i);
         }
     }
 }
 internal virtual void CollectForCompleteListOfProperties(ICollection <T> descriptors, int[] sortedProperties, int cursor)
 {
     descriptors.addAll(FullDescriptors);
     if (!Next.Empty)
     {
         for (int i = cursor + 1; i < sortedProperties.Length; i++)
         {
             PropertySet nextSet = Next.get(sortedProperties[i]);
             if (nextSet != null)
             {
                 nextSet.CollectForCompleteListOfProperties(descriptors, sortedProperties, i);
             }
         }
     }
 }