@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);
    }
@ 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 ) ; }
------------------------------------------------------------------------