code: public static <T> T newInstance(Settings settings, Key<String> key, ClassLoader classLoader) throws ServiceLocationException
      {
          Class<?> klass = loadClass(settings, key, classLoader);
          // Workaround for compiler bug (#6302954)
          return Factories.<T>newInstance(klass);
      }
docs: Creates a new instance of a class whose full qualified name is specified under the given key, loading
  the class with the given class loader.
  <br />
  If the given settings is null, or it does not contain the specified key, the default value of the key
  is taken from the {@link Defaults defaults}.
  
  @param settings    the configuration settings that may specify the full qualified name of the class to create,
  overriding the default value
  @param key         the key under which the full qualified name of the class is specified
  @param classLoader the class loader to use to load the full qualified name of the class
  @return a new instance of the class specified by the given key
  @throws ServiceLocationException if the instance cannot be created
  @see #newInstance(Settings, Key)