code: private Collection<Class<AuthenticationProvider>> getAuthenticationProviderClasses(Collection<String> names)
              throws GuacamoleException {
  
          // If no classnames are provided, just return an empty list
          if (names == null)
              return Collections.<Class<AuthenticationProvider>>emptyList();
  
          // Define all auth provider classes
          Collection<Class<AuthenticationProvider>> classes = new ArrayList<Class<AuthenticationProvider>>(names.size());
          for (String name : names)
              classes.add(getAuthenticationProviderClass(name));
  
          // Callers should not rely on modifying the result
          return Collections.unmodifiableCollection(classes);
  
      }
docs: Returns a new collection of all AuthenticationProvider subclasses having
  the given names. If any class does not exist or isn't actually a
  subclass of AuthenticationProvider, an exception will be thrown, and
  no further AuthenticationProvider 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.