core/src/main/java/com/orientechnologies/orient/core/sql/OChainedIndexProxy.java
public static <T> Collection<OChainedIndexProxy<T>> createProxies(OClass iSchemaClass, OSQLFilterItemField.FieldChain longChain) {
    List<OChainedIndexProxy<T>> proxies = new ArrayList<OChainedIndexProxy<T>>();

    for (List<OIndex<?>> indexChain : getIndexesForChain(iSchemaClass, longChain)) {
      proxies.add(new OChainedIndexProxy<T>(indexChain));
    }

    return proxies;
  }
public static <T> Collection<OChainedIndexProxy<T>> createProxies(OClass iSchemaClass, OSQLFilterItemField.FieldChain longChain) {
    List<OChainedIndexProxy<T>> proxies = new ArrayList<OChainedIndexProxy<T>>();

    for (List<OIndex<?>> indexChain : getIndexesForChain(iSchemaClass, longChain)) {
      proxies.add(new OChainedIndexProxy<T>(indexChain));
    }

    return proxies;
  }
Create proxies that support maximum number of different operations. In case when several different indexes which support
different operations (e.g. indexes of {@code UNIQUE} and {@code FULLTEXT} types) are possible, the creates the only one index
of each type.

@param longChain - property chain from the query, which should be evaluated

@return proxies needed to process query.