code: private static Class _loadClass(ClassLoading cl, String className, Class defaultValue, Set<Throwable> exceptions) {
  	className = className.trim();
  	if (StringUtil.isEmpty(className)) return defaultValue;
  
  	Class clazz = checkPrimaryTypesBytecodeDef(className, null);
  	if (clazz != null) return clazz;
  
  	// array in the format boolean[] or java.lang.String[]
  	if (className.endsWith("[]")) {
  
  	    StringBuilder pureCN = new StringBuilder(className);
  	    int dimensions = 0;
  	    do {
  		pureCN.delete(pureCN.length() - 2, pureCN.length());
  		dimensions++;
  	    }
  	    while (pureCN.lastIndexOf("[]") == pureCN.length() - 2);
  
  	    clazz = __loadClass(cl, pureCN.toString(), null, exceptions);
  
  	    if (clazz != null) {
  
  		for (int i = 0; i < dimensions; i++)
  		    clazz = toArrayClass(clazz);
  		return clazz;
  	    }
  	}
  
  	// array in the format [C or [Ljava.lang.String;
  	else if (className.charAt(0) == '[') {
  
  	    StringBuilder pureCN = new StringBuilder(className);
  	    int dimensions = 0;
  
  	    do {
  		pureCN.delete(0, 1);
  		dimensions++;
  	    }
  	    while (pureCN.charAt(0) == '[');
  
  	    clazz = __loadClass(cl, pureCN.toString(), null, exceptions);
  	    if (clazz != null) {
  		for (int i = 0; i < dimensions; i++)
  		    clazz = toArrayClass(clazz);
  		return clazz;
  	    }
  	}
  	return __loadClass(cl, className, defaultValue, exceptions);
      }
docs: loads a class from a specified Classloader with given classname
  
  @param className
  @param cl
  @return matching Class