code: public List<ComponentDescriptor> createComponentDescriptors(Class<?> componentClass, Type componentRoleType)
      {
          List<ComponentDescriptor> descriptors = new ArrayList<ComponentDescriptor>();
  
          // If there's a @Named annotation, use it and ignore hints specified in the @Component annotation.
          String[] hints;
          Named named = componentClass.getAnnotation(Named.class);
          if (named != null) {
              hints = new String[] {named.value()};
          } else {
              // If the Component annotation has several hints specified ignore the default hint value and for each
              // specified hint create a Component Descriptor
              Component component = componentClass.getAnnotation(Component.class);
              if (component != null && component.hints().length > 0) {
                  hints = component.hints();
              } else {
                  if (component != null && component.value().trim().length() > 0) {
                      hints = new String[] {component.value().trim()};
                  } else {
                      hints = new String[] {"default"};
                  }
              }
          }
  
          // Create the descriptors
          for (String hint : hints) {
              descriptors.add(createComponentDescriptor(componentClass, hint, componentRoleType));
          }
  
          return descriptors;
      }
docs: Create component descriptors for the passed component implementation class and component role class. There can be
  more than one descriptor if the component class has specified several hints.
  
  @param componentClass the component implementation class
  @param componentRoleType the component role type
  @return the component descriptors with resolved component dependencies
  @since 4.0M1