code: 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);
      }
docs: 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.