code: @Override
  	public void visit(
          final int version,
          final int access,
          final String name,
          final String signature,
          final String superName,
          final String[] interfaces)
      {
      	if ((access & ACC_SYNTHETIC) != 0)
  			throw new IllegalStateException("Cannot create type for anonymous or synthetic classes");
      	if ((ACC_ENUM & access) != 0) {
      		result = TypesFactory.eINSTANCE.createJvmEnumerationType();
      		offset = 2;
      	} else if ((ACC_ANNOTATION & access) != 0) {
      		result = TypesFactory.eINSTANCE.createJvmAnnotationType();
      	} else {
      		JvmGenericType generic = TypesFactory.eINSTANCE.createJvmGenericType(); 
      		result = generic;
  
      		generic.setInterface((access & ACC_INTERFACE) != 0);
      		generic.setStrictFloatingPoint((access & ACC_STRICT) != 0);
      	}
      	setTypeModifiers(access);
      	
      	proxies.setVisibility(access, result);
      	
      	setNameAndPackage(name);
  
      	BinarySuperTypeSignature genericSignature = null;
  		if (signature != null) {
  			if ((access & (ACC_STATIC | ACC_INTERFACE)) != 0) {
  				typeParameters = Collections.emptyMap();
  			}
  			genericSignature = BinarySignatures.createSuperTypeSignature(signature);
  			if (((ACC_ENUM | ACC_ANNOTATION) & access) == 0) {
  				typeParameters = proxies.createTypeParameters(genericSignature, (JvmTypeParameterDeclarator) result, typeParameters);
  			}
  		}
  		setSuperTypes(name, genericSignature, superName, interfaces);
      }
docs: ------------------------------------------------------------------------