private <T extends DomElement, U extends Component>
  void processComponents(RegistrationEntry.RegistrationType componentType,
                         List<T> componentContainer,
                         Function<T, List<? extends U>> componentGetter) {
    processElements(componentType,
                    componentContainer,
                    componentGetter,
                    Component::getImplementationClass, Component::getHeadlessImplementationClass
    );
    processElements(RegistrationEntry.RegistrationType.COMPONENT_INTERFACE,
                    componentContainer,
                    componentGetter,
                    Component::getInterfaceClass
    );
  }
private <T extends DomElement, U extends Component>
  void processComponents(RegistrationEntry.RegistrationType componentType,
                         List<T> componentContainer,
                         Function<T, List<? extends U>> componentGetter)