code: public static <S extends Storable> CompositeScore<S> evaluate
          (OrderedProperty<S>[] indexProperties,
           boolean unique,
           boolean clustered,
           Filter<S> filter,
           OrderingList<S> ordering)
      {
          FilteringScore<S> filteringScore = FilteringScore
              .evaluate(indexProperties, unique, clustered, filter);
  
          OrderingScore<S> orderingScore = OrderingScore
              .evaluate(indexProperties, unique, clustered, filter, ordering);
  
          return new CompositeScore<S>(filteringScore, orderingScore);
      }
docs: Evaluates the given index properties for its filtering and ordering
  capabilities against the given filter and order-by properties.
  
  @param indexProperties index properties to evaluate
  @param unique true if index is unique
  @param clustered true if index is clustered
  @param filter optional filter which cannot contain any logical 'or' operations.
  @param ordering optional properties which define desired ordering
  @throws IllegalArgumentException if index is null or filter is not supported