private Collection<Class<?>> getListenerClasses(Collection<String> names)
            throws GuacamoleException {

        // If no classnames are provided, just return an empty list
        if (names == null)
            return Collections.<Class<?>>emptyList();

        // Define all auth provider classes
        Collection<Class<?>> classes = new ArrayList<Class<?>>(names.size());
        for (String name : names)
            classes.add(getListenerClass(name));

        // Callers should not rely on modifying the result
        return Collections.unmodifiableCollection(classes);
    }
Returns a new collection of all Listener subclasses having the given names.
If any class does not exist or isn't actually subclass of Listener, an
exception will be thrown, an no further Listener classes will be loaded.

@param names
    The names of the AuthenticationProvider classes to retrieve.

@return
    A new collection of all AuthenticationProvider subclasses having the
    given names.

@throws GuacamoleException
    If any given class does not exist, or if any given class is not a
    subclass of AuthenticationProvider.
guacamole/src/main/java/org/apache/guacamole/extension/Extension.java