docs: public static <T> Collection<T> loadEnriched(final Class<T> serviceClass)
     {
        try
        {
           Collection<T> services = new ArrayList<T>();
           ServiceEnricher origin = null;
  
           if (!NonEnriching.class.isAssignableFrom(serviceClass))
           {
              if (enricherLoader == null)
              {
                 enricherLoader = java.util.ServiceLoader
                          .load(ServiceEnricher.class);
              }
  
              for (ServiceEnricher enricher : enricherLoader)
              {
                 services = enricher.produce(serviceClass);
                 if (services == null)
                 {
                    services = new ArrayList<T>();
                 }
                 if (!services.isEmpty())
                 {
                    origin = enricher;
                    break;
                 }
              }
           }
  
           if (services.isEmpty())
           {
              Constructor<? extends T> constructor = serviceClass.getDeclaredConstructor();
              constructor.setAccessible(true);
              services.add(constructor.newInstance());
           }
  
           if (!NonEnriching.class.isAssignableFrom(serviceClass))
           {
              for (ServiceEnricher enricher : enricherLoader)
              {
                 if (!enricher.equals(origin))
                 {
                    for (T service : services) {
                       enricher.enrich(service);
                    }
                 }
              }
           }
  
           return services;
        }
        catch (NoClassDefFoundError e)
        {
           throw new RuntimeException("Could not instantiate service class " + serviceClass.getName(), e);
        }
        catch (InvocationTargetException e)
        {
           throw new RuntimeException("Error instantiating " + serviceClass, e.getCause());
        }
        catch (IllegalArgumentException e)
        {
           throw new RuntimeException("Error instantiating " + serviceClass, e);
        }
        catch (InstantiationException e)
        {
           throw new RuntimeException("Error instantiating " + serviceClass, e);
        }
        catch (IllegalAccessException e)
        {
           throw new RuntimeException("Error instantiating " + serviceClass, e);
        }
        catch (SecurityException e)
        {
           throw new RuntimeException("Error instantiating " + serviceClass, e);
        }
        catch (NoSuchMethodException e)
        {
           throw new RuntimeException("Error instantiating " + serviceClass, e);
        }
     }