@SuppressWarnings("unchecked")
  private void collectConfigurableProviders(final List<T> providers) {
    if (type.isAssignableFrom(ConfigurableProvider.class) && (type != ConfigurableProvider.class)) {
      final Iterator<ConfigurableProvider> iterator = lookupProviders(ConfigurableProvider.class);
      for (; iterator.hasNext();) {
        final T provider = (T) iterator.next();
        LOG.debug("found provider: {}", provider);
        providers.add(provider);
      }
    }
  }
@SuppressWarnings("unchecked")
  private void collectConfigurableProviders(final List<T> providers) {
    if (type.isAssignableFrom(ConfigurableProvider.class) && (type != ConfigurableProvider.class)) {
      final Iterator<ConfigurableProvider> iterator = lookupProviders(ConfigurableProvider.class);
      for (; iterator.hasNext();) {
        final T provider = (T) iterator.next();
        LOG.debug("found provider: {}", provider);
        providers.add(provider);
      }
    }
  }
@ SuppressWarnings ( "unchecked" ) private void collectConfigurableProviders ( final List < T > providers ) { if ( type . isAssignableFrom ( ConfigurableProvider . class ) && ( type != ConfigurableProvider . class ) ) { final Iterator < ConfigurableProvider > iterator = lookupProviders ( ConfigurableProvider . class ) ; for ( ; iterator . hasNext ( ) ; ) { final T provider = ( T ) iterator . next ( ) ; LOG . debug ( "found provider: {}" , provider ) ; providers . add ( provider ) ; } } }
Collects also providers of type {@link ConfigurableProvider} if the T type is a supertype of
{@link ConfigurableProvider}. If the type is already {@link ConfigurableProvider}, it will be ignored to avoid
adding of duplicate providers.

@param providers
the list where found providers will be added.
Collects also providers of type { @link ConfigurableProvider } if the T type is a supertype of { @link ConfigurableProvider } . If the type is already { @link ConfigurableProvider } it will be ignored to avoid adding of duplicate providers .