code: @SuppressWarnings("unchecked")
  	public <T> Class<T> getClass(String key, Class<? extends T> defaultValue, Class<? super T> ancestor) {
  		String className = getStringInternal(key);
  		if (className == null) {
  			return (Class<T>) defaultValue;
  		}
  
  		try {
  			return (Class<T>) Class.forName(className, true, this.classLoader);
  		} catch (ClassNotFoundException e) {
  			throw new IllegalStateException(e);
  		}
  	}
docs: Returns the class associated with the given key as a string.
  
  @param <T>
  the ancestor of both the default value and the potential value
  @param key
  the key pointing to the associated value
  @param defaultValue
  the optional default value returned if no entry exists
  @param ancestor
  the ancestor of both the default value and the potential value
  @return the (default) value associated with the given key
  @throws IllegalStateException
  if the class identified by the associated value cannot be resolved
  @see #setClass(String, Class)