Classifier<LookupElement> (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)); }