private static Classifier<LookupElement> createClassifier(final int index,
                                                            final List<? extends ClassifierFactory<LookupElement>> components,
                                                            Classifier<LookupElement> tail) {
    if (index == components.size()) {
      return tail;
    }

    return components.get(index).createClassifier(createClassifier(index + 1, components, tail));
  }
private static Classifier<LookupElement> createClassifier(final int index,
                                                            final List<? extends ClassifierFactory<LookupElement>> components,
                                                            Classifier<LookupElement> tail)