code: private static <T extends Storable> OrderingList
          mostOrdering(StorableProperty<T> primeTarget, OrderingList<T> targetOrdering)
      {
          OrderingList handledOrdering = OrderingList.emptyList();
          for (OrderedProperty<T> targetProp : targetOrdering) {
              ChainedProperty<T> chainedProp = targetProp.getChainedProperty();
              if (chainedProp.getPrimeProperty().equals(primeTarget)) {
                  handledOrdering = handledOrdering
                      // I hate Java generics. Note the stupid cast. I have finally
                      // realized the core problem: the wildcard model is broken.
                      .concat(OrderedProperty
                              .get((ChainedProperty) chainedProp.tail(),
                                   targetProp.getDirection()));
              } else {
                  break;
              }
          }
  
          return handledOrdering;
      }
docs: Given a list of chained ordering properties, returns the properties
  stripped of the matching chain prefix for the targetToSourceProperty. As
  the target ordering is scanned left-to-right, if any property is found
  which doesn't match the targetToSourceProperty, the building of the new
  list stops. In other words, it returns a consecutive run of matching
  properties.