code: @SuppressWarnings("unchecked")
      @Override
      public <R> List<R> buildComponents(final Class<R> clazz) throws CoreException {
  
          try {
  
              final List<R> components = new ArrayList<>();
  
              if (clazz.isInterface() || Modifier.isAbstract(clazz.getModifiers())) {
  
                  final RegistrationPointItem definition = this.definitions.get(clazz);
  
                  final List<RegistrationItem> items = this.implementations.get(clazz);
                  if (items != null) {
  
                      Collections.sort(items);
  
                      // Reverse the order of registration items when we want o inverse the priorities
                      if (!definition.reverse()) {
                          Collections.reverse(items);
                      }
  
                      // Limit the number of component to build to only one when exclusive mode is activated
                      final int nbComponent = definition.exclusive() ? 1 : Integer.MAX_VALUE;
  
                      for (final RegistrationItem item : items.stream().limit(nbComponent).collect(Collectors.toList())) {
                          components.add((R) item.implClass().newInstance());
                      }
                  }
  
              } else {
                  // Simply build a instance of the given concrete class
                  components.add(clazz.newInstance());
              }
  
              return components;
  
          } catch (InstantiationException | IllegalAccessException e) {
              throw new CoreException(COMPONENT_BUILD_ERROR.getText(clazz.getName()), e);
          }
      }
docs: {@inheritDoc}