// generic type declarations GenericClassDecl : ClassDecl ::= Modifiers [SuperClassAccess:Access] Implements:Access* BodyDecl* TypeParameter:TypeVariable* /ParTypeDecl:ParClassDecl*/; GenericInterfaceDecl : InterfaceDecl ::= Modifiers SuperInterfaceId:Access* BodyDecl* TypeParameter:TypeVariable* /ParTypeDecl:ParInterfaceDecl*/; // parameterized type declarations ParClassDecl : ClassDecl ::= Argument:Access* /[SuperClassAccess:Access]/ /Implements:Access*/ /BodyDecl*/; RawClassDecl : ParClassDecl; ParInterfaceDecl : InterfaceDecl ::= Argument:Access* /SuperInterfaceId:Access*/ /BodyDecl*/; RawInterfaceDecl : ParInterfaceDecl; // parameterized type access ParTypeAccess : Access ::= TypeAccess:Access TypeArgument:Access*; TypeVariable : ReferenceType ::= Modifiers BodyDecl* TypeBound:Access*; abstract AbstractWildcard : Access; Wildcard : AbstractWildcard; WildcardExtends : AbstractWildcard ::= Access; WildcardSuper : AbstractWildcard ::= Access; abstract AbstractWildcardType : TypeDecl; WildcardType : AbstractWildcardType; WildcardExtendsType : AbstractWildcardType ::= Access; WildcardSuperType : AbstractWildcardType ::= Access; MethodDeclSubstituted : MethodDecl ::= ; ConstructorDeclSubstituted : ConstructorDecl ::= ; FieldDeclarationSubstituted : FieldDeclaration ::= ; ParameterDeclarationSubstituted : ParameterDeclaration ::= ; VariableArityParameterDeclarationSubstituted : VariableArityParameterDeclaration ::= ; ClassDeclSubstituted : ClassDecl ::= ; InterfaceDeclSubstituted : InterfaceDecl ::= ; GenericClassDeclSubstituted : GenericClassDecl ::= ; GenericInterfaceDeclSubstituted : GenericInterfaceDecl ::= ; LUBType : ReferenceType ::= Modifiers BodyDecl* TypeBound:Access*; GLBType : ReferenceType ::= Modifiers BodyDecl* TypeBound:Access*; WildcardsCompilationUnit : CompilationUnit; BridgeMethodDecl : MethodDecl;