code: public <U> Class<? extends U> getClass(String name,
  	                                       Class<? extends U> defaultValue,
  	                                       Class<U> xface) {
  		try {
  			Class<?> theClass = getClass(name, defaultValue);
  			if (theClass != null && !xface.isAssignableFrom(theClass))
  				throw new RuntimeException(theClass+" not "+xface.getName());
  			else if (theClass != null)
  				return theClass.asSubclass(xface);
  			else
  				return null;
  		} catch (Exception e) {
  			throw new RuntimeException(e);
  		}
  	}
docs: Get the value of the <code>name</code> property as a <code>Class</code>
  implementing the interface specified by <code>xface</code>.
  
  If no such property is specified, then <code>defaultValue</code> is
  returned.
  
  An exception is thrown if the returned class does not implement the named
  interface.
  
  @param name the class name.
  @param defaultValue default value.
  @param xface the interface implemented by the named class.
  @return property value as a <code>Class</code>,
  or <code>defaultValue</code>.