private <T extends DomElement, U extends DomElement>
  void processElements(RegistrationEntry.RegistrationType type,
                       List<T> elementContainer,
                       Function<T, List<? extends U>> elementGetter,
                       Function<U, GenericDomValue<PsiClass>>... psiClassGetters) {
    for (T wrapper : elementContainer) {
      for (U element : elementGetter.fun(wrapper)) {
        for (Function<U, GenericDomValue<PsiClass>> psiClassGetter : psiClassGetters) {
          addEntry(element, psiClassGetter.fun(element), type);
        }
      }
    }
  }
private <T extends DomElement, U extends DomElement>
  void processElements(RegistrationEntry.RegistrationType type,
                       List<T> elementContainer,
                       Function<T, List<? extends U>> elementGetter,
                       Function<U, GenericDomValue<PsiClass>>... psiClassGetters)