code: public synchronized static TypeDesc forClass(Class<?> clazz) {
          if (clazz == null) {
              return null;
          }
  
          TypeDesc type = cClassesToInstances.get(clazz);
          if (type != null) {
              return type;
          }
  
          if (clazz.isArray()) {
              type = forClass(clazz.getComponentType()).toArrayType();
          }
          else if (clazz.isPrimitive()) {
              if (clazz == int.class) {
                  type = INT;
              }
              if (clazz == boolean.class) {
                  type = BOOLEAN;
              }
              if (clazz == char.class) {
                  type = CHAR;
              }
              if (clazz == byte.class) {
                  type = BYTE;
              }
              if (clazz == long.class) {
                  type = LONG;
              }
              if (clazz == float.class) {
                  type = FLOAT;
              }
              if (clazz == double.class) {
                  type = DOUBLE;
              }
              if (clazz == short.class) {
                  type = SHORT;
              }
              if (clazz == void.class) {
                  type = VOID;
              }
          }
          else {
              String name = clazz.getName();
              type = intern(new ObjectType(generateDescriptor(name), name));
          }
  
          cClassesToInstances.put(clazz, type);
          return type;
      }
docs: Acquire a TypeDesc from any class, including primitives and arrays.