code: private static Class<?> desc2class(ClassLoader cl, String desc)
  			throws ClassNotFoundException {
  		switch (desc.charAt(0)) {
  		case JVM_VOID:
  			return void.class;
  		case JVM_BOOLEAN:
  			return boolean.class;
  		case JVM_BYTE:
  			return byte.class;
  		case JVM_CHAR:
  			return char.class;
  		case JVM_DOUBLE:
  			return double.class;
  		case JVM_FLOAT:
  			return float.class;
  		case JVM_INT:
  			return int.class;
  		case JVM_LONG:
  			return long.class;
  		case JVM_SHORT:
  			return short.class;
  		case 'L':
  			desc = desc.substring(1, desc.length() - 1).replace('/', '.'); // "Ljava/lang/Object;"
  																			// ==>
  																			// "java.lang.Object"
  			break;
  		case '[':
  			desc = desc.replace('/', '.'); // "[[Ljava/lang/Object;" ==>
  											// "[[Ljava.lang.Object;"
  			break;
  		default:
  			throw new ClassNotFoundException("Class not found: " + desc);
  		}
  
  		if (cl == null)
  			cl = getClassLoader();
  		Class<?> clazz = DESC_CLASS_CACHE.get(desc);
  		if (clazz == null) {
  			clazz = Class.forName(desc, true, cl);
  			DESC_CLASS_CACHE.put(desc, clazz);
  		}
  		return clazz;
  	}
docs: desc to class. "[Z" => boolean[].class "[[Ljava/util/Map;" =>
  java.util.Map[][].class
  
  @param cl
  ClassLoader instance.
  @param desc
  desc.
  @return Class instance.
  @throws ClassNotFoundException